Method and apparatus for generating a composite indexable linear data structure to permit selection of map elements based on linear elements

ABSTRACT

A method, apparatus and computer program product are provided for generating a composite indexable linear data structure to permit selection of map elements based on linear elements. In the context of a method, map data and a selected linear element indication are received. The map data comprises a list of map elements. The method also includes extracting map elements within a bounding box, and indexing the extracted map elements. The indexing is spatial indexing. The method also includes correlating the indexed map elements with a plurality of sub segments of the linear element, and generating a composite indexable linear data structure based on the correlation of map elements with the plurality of sub-segments of the linear element.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/282,144, filed on May 20, 2014, the contents of which are herebyincorporated by reference in their entirety.

TECHNOLOGICAL FIELD

An example embodiment of the present invention relates to map renderingand, more particularly, to a method, apparatus and computer programproduct for generating a composite indexable linear data structure topermit selection of map elements based on linear elements.

BACKGROUND

In some map rendering systems selection of map elements or particularelements along a street, path, or trail is not possible or is restrictedto the geographical information system (GIS) database spatial queries.The GIS database spatial queries may be too slow for effectiveinteractive map rendering applications.

The rendering of maps using raster based tiles, in some map renderingsystems, limits selections and visualization of elements to overlays,which are limited in how they may change underlying map element. In thecase of three dimensional maps the use of overlays in this manner is notpossible.

BRIEF SUMMARY

A method, apparatus and computer program product are provided inaccordance with an example embodiment for generating an indexable lineardata structure to permit selection of map elements based on linearelements. In an example embodiment, a method is provided that includesreceiving map data and a selected linear element indication. The mapdata includes a list of map elements. The method also includesextracting map elements within a bounding box and indexing the extractedmap elements, such as by spatial indexing. The method also includescorrelating the indexed map elements with a plurality of sub segments ofthe linear element and generating a composite indexable linear datastructure based on the correlation of map elements with the plurality ofsub-segments of the linear element.

In an example embodiment of the method, correlating the indexed mapelements with a plurality of sub-segments of the linear element includessegmenting the linear element into the plurality of sub-segments andsearching the spatial index for map elements within a predetermineddistance from the sub-segment. In some example embodiments of themethod, extracting map elements includes extracting map elements from aspatial database. In further example embodiments of the method, theextracted map data comprises relational data, shape data, or keyholemarkup language file data.

In an example embodiment of the method, the composite indexable lineardata structure comprises a list of indexed map elements, wherein thelist of indexed map elements comprises vector, hash table, or linkedlist elements. In an example embodiment, the method may also includesorting an indexable linear data structure by distance from thesub-segment of the linear element. In some example embodiments of themethod, the linear element is a street, path, or trail.

In another example embodiment, an apparatus is provided including atleast one processor and at least one memory including computer programcode with the at least one memory and computer program code configuredto, with the processor, cause the apparatus to at least receive map dataand a selected linear element indication. The map data includes a listof map elements. The at least one memory and computer program code ofthe example embodiment are also configured to, with the processor, causethe apparatus to extract map elements within a bounding box and indexthe extracted map elements, such as by spatial indexing. The map datacomprises a list of map elements. The at least one memory and computerprogram code of the example embodiment are also configured to, with theprocessor, cause the apparatus to correlate the indexed map elementswith a plurality of sub segments of the linear element and generate acomposite indexable linear data structure based on the correlation ofmap elements with the plurality of sub-segments of the linear element.

In an example embodiment of the apparatus, correlating the indexed mapelements with a plurality of sub-segments of the linear element includessegmenting the linear element into the plurality of sub-segments andsearching the spatial index for map elements within a predetermineddistance from the sub-segment. In some example embodiments of theapparatus, extracting map elements includes extracting map elements froma spatial database. In further example embodiments of the apparatus, theextracted map data comprises relational data, shape data, or keyholemarkup language file data.

In an example embodiment of the apparatus, the composite indexablelinear data structure comprises a list of indexed map elements, whereinthe list of indexed map elements comprises vector, hash table, or linkedlist elements. In an example embodiment of the apparatus, the at leastone memory and the computer program code are further configured to sortan indexable linear data structure by distance from the sub-segment ofthe linear element. In some example embodiments of the method, thelinear element is a street, path, or trail.

In a further example embodiment, a computer program product is providedincluding at least one non-transitory computer-readable storage mediumhaving computer-executable program code portions stored therein with thecomputer-executable program code portions comprising program codeinstructions configured to receive map data and a selected linearelement indication. The map data includes a list of map elements. Thecomputer-executable program code portions of the example embodiment alsocomprise program code instructions configured to extract map elementswithin a bounding box and index the extracted map elements, such as byspatial indexing. The computer-executable program code portions of theexample embodiment also comprise program code instructions configured tocorrelate the indexed map elements with a plurality of sub segments ofthe linear element, and generate a composite indexable linear datastructure based on the correlation of map elements with the plurality ofsub-segments of the linear element.

In an example embodiment of the computer program product, correlatingthe indexed map elements with a plurality of sub-segments of the linearelement includes segmenting the linear element into the plurality ofsub-segments and searching the spatial index for map elements within apredetermined distance from the sub-segment. In some example embodimentsof the computer program product, extracting map elements includesextracting map elements from a spatial database. In further exampleembodiments of the computer program product, the extracted map datacomprises relational data, shape data, or keyhole markup language filedata.

In an example embodiment of the computer program product, the compositeindexable linear data structure comprises a list of indexed mapelements, wherein the list of indexed map elements comprises vector,hash table, or linked list elements. In an example embodiment of thecomputer program product, computer-executable program code portionsfurther comprise program code instructions configured to sort anindexable linear data structure by distance from the sub-segment of thelinear element.

In yet another example embodiment, an apparatus is provided thatincludes means for receiving map data and a selected linear elementindication. The map data includes a list of map elements. The apparatusalso includes means for extracting map elements within a bounding boxand means for indexing the extracted map elements, such as by spatialindexing. The apparatus also includes means for correlating the indexedmap elements with a plurality of sub segments of the linear element andmeans for generating a composite indexable linear data structure basedon the correlation of map elements with the plurality of sub-segments ofthe linear element.

BRIEF DESCRIPTION OF THE DRAWINGS

Having thus described example embodiments of the invention in generalterms, reference will now be made to the accompanying drawings, whichare not necessarily drawn to scale, and wherein:

FIG. 1 illustrates a communications diagram in accordance with anexample embodiment of the present invention;

FIG. 2 is a block diagram of an apparatus that may be specificallyconfigured for generating an composite indexable linear data structureto permit selection of map elements based on linear elements inaccordance with an example embodiment of the present invention;

FIGS. 3 and 4 illustrate example composite indexable linear datastructures in accordance with an embodiment of the present invention;

FIGS. 5-8 illustrate example map renderings utilizing a compositeindexable linear data structure in accordance with an embodiment of thepresent invention; and

FIG. 9 is a flow chart illustrating the operations performed, such as bythe apparatus of FIG. 2, in accordance with an example embodiment of thepresent invention.

DETAILED DESCRIPTION

Some embodiments of the present invention will now be described morefully hereinafter with reference to the accompanying drawings, in whichsome, but not all, embodiments of the invention are shown. Indeed,various embodiments of the invention may be embodied in many differentforms and should not be construed as limited to the embodiments setforth herein; rather, these embodiments are provided so that thisdisclosure will satisfy applicable legal requirements. Like referencenumerals refer to like elements throughout. As used herein, the terms“data,” “content,” “information,” and similar terms may be usedinterchangeably to refer to data capable of being transmitted, receivedand/or stored in accordance with embodiments of the present invention.Thus, use of any such terms should not be taken to limit the spirit andscope of embodiments of the present invention.

Additionally, as used herein, the term ‘circuitry’ refers to (a)hardware-only circuit implementations (for example, implementations inanalog circuitry and/or digital circuitry); (b) combinations of circuitsand computer program product(s) comprising software and/or firmwareinstructions stored on one or more computer readable memories that worktogether to cause an apparatus to perform one or more functionsdescribed herein; and (c) circuits, such as, for example, amicroprocessor(s) or a portion of a microprocessor(s), that requiresoftware or firmware for operation even if the software or firmware isnot physically present. This definition of ‘circuitry’ applies to alluses of this term herein, including in any claims. As a further example,as used herein, the term ‘circuitry’ also includes an implementationcomprising one or more processors and/or portion(s) thereof andaccompanying software and/or firmware. As another example, the term‘circuitry’ as used herein also includes, for example, a basebandintegrated circuit or applications processor integrated circuit for amobile phone or a similar integrated circuit in a server, a cellularnetwork device, other network device, and/or other computing device.

As defined herein, a “computer-readable storage medium,” which refers toa non-transitory physical storage medium (for example, volatile ornon-volatile memory device), can be differentiated from a“computer-readable transmission medium,” which refers to anelectromagnetic signal.

Overview

As digital map rendering become more dynamic, both in terms of displayand interaction, it may be necessary to develop new methods ofcontrolling how the map rendering displays information. Similarly, theuse of contextual maps, which change information based on use, may alsorequire a new method of controlling map rendering displays.

In example embodiments of the present invention, a data structure isgenerated, e.g. a composite indexable linear data structure, which maybe utilized to relate map elements, such as building footprints, pointsof interest (POIs), building meshes, and other map elements, such aslabels, to linear map elements such as streets, paths, trails, or thelike. The data structure, once generated, may be utilized to select mapelements associated with a linear element, allowing enhanced display ofthe selected elements and new forms of user interaction.

Communications Diagram

A method, apparatus and computer program product are provided inaccordance with an example embodiment for generating an indexable lineardata structure to permit selection of map elements based on linearelements. FIG. 1 illustrates a communication diagram including userequipment (UE) 102, in data communications with a map database 104. TheUE 102 may include the map database 104, such as a local map datamemory, or be associated with the map database, such as a remote mapdata server. The UE 102 may be a mobile computing device such as alaptop computer, tablet computer, mobile phone, smart phone, navigationunit, personal data assistant, or the like. Additionally oralternatively the UE 102 may be a fixed computing device, such as apersonal computer, computer workstation, kiosk, office terminal computeror system, or the like.

The UE 102 may receive a selected linear element indication. Theselected linear element indication may be based on the current locationof the user, e.g. current location street, and/or the UE 102 or a seriesof locations, such past locations for a predetermined period of time,such as 30 seconds, 1 minute, 5 minutes, 30 minutes, or any other timeperiod. The location data may be received from a locations sensor, suchas global positioning sensor, associated with the UE 102. The selectedlinear element indication may also be based on a destination location,which may be entered by the user, such as a specific address orbusiness, or a destination area such as “uptown” Charlotte.

Additionally or alternatively, the selected linear element indicationmay be a navigational route using streets, paths, trails, highways, orthe like. The UE 102 may determine or receive a route data associatedwith the current or starting location and the destination location andselect the linear elements associated with the route.

In an example embodiment, map data may be displayed on the UE 102 userinterface based on a request for the map data or current location. Theuser may select a linear element using the user interface, such asselecting a street or tracing a route.

The UE 102 may receive map data from the map database 104. The mapdatabase 104 may include one or more sub-databases, including geographicregions; subject matter, e.g. street map, transit maps, survey maps, orthe like; spatial database, e.g. spatial locations, such as latitude orlongitude, relational databases, e.g. relationships between mapelements, or the like. The map data may include the geographic elements,such as lakes, cities, topography, or the like and information elementssuch as streets, building foot prints, businesses, transit lines, parks,paths, walkways, trails, labels, building meshes, points of interest(POIs), or the like. In some instances map data may be received by theUE 102 in response to receiving location data, e.g. current location,series of locations, and/or destination location. The UE 102 may requestand receive map data associated with a current location and/or adestination location. In an example embodiment, the UE 102 may receivethe map data based on the selection of a linear element, such as “MainStreet Murphysboro, Ill.” The UE may request map data which contains theIllinois, Murphysboro, main street, or a combination of the requestedelements.

The UE 102 may determine a boundary box, e.g. the longitudinal andlatitudinal definition of map elements that may be used for furtherprocessing and rendering. The UE 102 may generate a list of map elementswhich are within the boundary box. The UE 120 may determine the boundarybox automatically based on the location data, e.g. the current location.The UE 102 may determine the boundary box based on the rate of change ofthe current location data, e.g. a boundary box of sufficient size torender useful information at the current rate of travel, e.g. ½ mile ata rate of 15 miles per hour or 2 miles at 70 mile per hour. Additionallyor alternatively the UE 102 may use the density of the map data elementsin the boundary box determination, e.g. the UE may determine a largerboundary box in a rural area with few map data elements and a smallerboundary box in an urban area with a high map element density.

Additionally or alternatively, the UE 102 may receive a boundary boxselection indication from the user interface, in an instance in whichthe user selects or alters the focus or zoom level.

The UE 102 may extract, e.g. copy, the map elements data for elementswithin the boundary box from a spatial data database which may beassociated with or a portion of the map database 104. The map elementdata may include relational information, shape data, key markup languagefile data, or the other geospatial data. The relational data mayadditionally or alternatively be extracted from a relational databasewhich may be associated with, or a portion of, the map database 104.

The UE 102 may spatially index each of the respective extracted mapelements. The UE 102 may spatially index the map element data using aquad-tree, R*Tree, kd-tree, or the like. The spatial index may be usedfor the duration of the algorithm for generating the indexable lineardata structure and may be discarded or saved to a memory when thealgorithm has completed.

The UE 102 may sample, e.g. segment, each of the selected linearelements evenly along its entire length. Sampling may includesegmentation of the linear element and determination of the coordinatepositions of the segment endpoints. The size of the subsample, may be aparameter of the algorithm, e.g. SUBSIZE, and may be selected so thatsub-segments of 1 meter or less are generated. The sampling size couldbe selected for any distance measurement which would allow for usefuldistribution of elements, e.g. in a rural environment a 1 mile samplingsize may be appropriate due to sparse map element density, wherein in anurban area a sampling size of 100 feet may render too may map elementsto be displayed on the UE 102 or used by the user.

The UE 102 may query the spatial index for each sub segment endpoint formap elements within a predetermined distance from the sub-segmentendpoint coordinates, e.g. MAXDISTANCE, to generate a list of mapelements which are closest to the sub-segment. In an example embodiment,the UE may perform the query of the spatial index using a radius search,which may return all of the map elements within the MAXDISTANCE radius.Additionally or alternatively, the UE 102 may perform the query of thespatial index, by fattening the sub-segment, e.g. widening thesub-segment by a function of the MAXDISTANCE, for example ½ theMAXDISTNCE on each side of the sub-segment. The query may return a listof map elements within range of the sub-segment.

The UE 102 may generate an indexable linear data structure by grouping,e.g. correlating, the indexed map elements in to a list associated withthe sub-segment, and inserting each into an indexable linear datastructure, such as a vector, hash table, linked list or the like. In anexample embodiment, each indexable linear data structure may be sortedby the distance from the segment point. The UE 102 may compile theindexable linear data structures in to a composite indexable linear datastructure.

Example Apparatus

A UE 102 may include or otherwise be associated with an apparatus 200 asshown in FIG. 2. The apparatus, such as that shown in FIG. 2, isspecifically configured in accordance with an example embodiment of thepresent invention to generate an indexable linear data structure topermit selection of map elements based on linear elements. The apparatusmay include or otherwise be in communication with a processor 202, amemory device 204, a communication interface 206, and a user interface208. In some embodiments, the processor (and/or co-processors or anyother processing circuitry assisting or otherwise associated with theprocessor) may be in communication with the memory device via a bus forpassing information among components of the apparatus. The memory devicemay be non-transitory and may include, for example, one or more volatileand/or non-volatile memories. In other words, for example, the memorydevice may be an electronic storage device (for example, a computerreadable storage medium) comprising gates configured to store data (forexample, bits) that may be retrievable by a machine (for example, acomputing device like the processor). The memory device may beconfigured to store information, data, content, applications,instructions, or the like for enabling the apparatus to carry outvarious functions in accordance with an example embodiment of thepresent invention. For example, the memory device could be configured tobuffer input data for processing by the processor. Additionally oralternatively, the memory device could be configured to storeinstructions for execution by the processor.

As noted above, the apparatus 200 may be embodied by UE 102. However, insome embodiments, the apparatus may be embodied as a chip or chip set.In other words, the apparatus may comprise one or more physical packages(for example, chips) including materials, components and/or wires on astructural assembly (for example, a baseboard). The structural assemblymay provide physical strength, conservation of size, and/or limitationof electrical interaction for component circuitry included thereon. Theapparatus may therefore, in some cases, be configured to implement anembodiment of the present invention on a single chip or as a single“system on a chip.” As such, in some cases, a chip or chipset mayconstitute means for performing one or more operations for providing thefunctionalities described herein.

The processor 202 may be embodied in a number of different ways. Forexample, the processor may be embodied as one or more of varioushardware processing means such as a coprocessor, a microprocessor, acontroller, a digital signal processor (DSP), a processing element withor without an accompanying DSP, or various other processing circuitryincluding integrated circuits such as, for example, an ASIC (applicationspecific integrated circuit), an FPGA (field programmable gate array), amicrocontroller unit (MCU), a hardware accelerator, a special-purposecomputer chip, or the like. As such, in some embodiments, the processormay include one or more processing cores configured to performindependently. A multi-core processor may enable multiprocessing withina single physical package. Additionally or alternatively, the processormay include one or more processors configured in tandem via the bus toenable independent execution of instructions, pipelining and/ormultithreading.

In an example embodiment, the processor 202 may be configured to executeinstructions stored in the memory device 204 or otherwise accessible tothe processor. Alternatively or additionally, the processor may beconfigured to execute hard coded functionality. As such, whetherconfigured by hardware or software methods, or by a combination thereof,the processor may represent an entity (for example, physically embodiedin circuitry) capable of performing operations according to anembodiment of the present invention while configured accordingly. Thus,for example, when the processor is embodied as an ASIC, FPGA or thelike, the processor may be specifically configured hardware forconducting the operations described herein. Alternatively, as anotherexample, when the processor is embodied as an executor of softwareinstructions, the instructions may specifically configure the processorto perform the algorithms and/or operations described herein when theinstructions are executed. However, in some cases, the processor may bea processor of a specific device (for example, a mobile terminal or afixed computing device) configured to employ an embodiment of thepresent invention by further configuration of the processor byinstructions for performing the algorithms and/or operations describedherein. The processor may include, among other things, a clock, anarithmetic logic unit (ALU) and logic gates configured to supportoperation of the processor.

The apparatus 200 of an example embodiment may also include acommunication interface 206 that may be any means such as a device orcircuitry embodied in either hardware or a combination of hardware andsoftware that is configured to receive and/or transmit data from/to acommunications device in communication with the apparatus, such as tofacilitate communications with one or more user equipment 110, utilitydevice, or the like. In this regard, the communication interface mayinclude, for example, an antenna (or multiple antennas) and supportinghardware and/or software for enabling communications with a wirelesscommunication network. Additionally or alternatively, the communicationinterface may include the circuitry for interacting with the antenna(s)to cause transmission of signals via the antenna(s) or to handle receiptof signals received via the antenna(s). In some environments, thecommunication interface may alternatively or also support wiredcommunication. As such, for example, the communication interface mayinclude a communication modem and/or other hardware and/or software forsupporting communication via cable, digital subscriber line (DSL),universal serial bus (USB) or other mechanisms.

The apparatus 200 may also include a user interface 208 that may, inturn, be in communication with the processor 202 to provide output tothe user and, in some embodiments, to receive an indication of a userinput. As such, the user interface may include a display and, in someembodiments, may also include a keyboard, a mouse, a joystick, a touchscreen, touch areas, soft keys, one or more microphones, a plurality ofspeakers, or other input/output mechanisms. In one embodiment, theprocessor may comprise user interface circuitry configured to control atleast some functions of one or more user interface elements such as adisplay and, in some embodiments, a plurality of speakers, a ringer, oneor more microphones and/or the like. The processor and/or user interfacecircuitry comprising the processor may be configured to control one ormore functions of one or more user interface elements through computerprogram instructions (for example, software and/or firmware) stored on amemory accessible to the processor (for example, memory device 204,and/or the like).

Example Composite Indexable Linear Data Structures

FIGS. 3 and 4 illustrate example composite indexable linear datastructures in accordance with an embodiment of the present invention.FIG. 1 depicts a composite linear data structure 300, which has nineindexable linear data structures 310 associated with the linear element302. The composite indexable linear data structure 300 may be a streetlevel composite indexable linear data structure. The indexable lineardata structures include POIs 306, which are represented by circles andbuilding elements 304 represented by their respective shapes. Each mapelement, e.g. POI 306 and building footprint 304, is stored at an indexentry and can be optionally sorted by distance from the linear element302, e.g. street.

FIG. 4 depicts a composite indexable linear data structure whichincludes three linear elements 302 a-c. The inclusion of multiple linearelements 302 a-c permits selection of elements along a longer or morecomplex path, such as those found in navigational directions.

Example Map Renderings Utilizing a Composite Indexable Linear DataStructure

FIGS. 5-8 illustrate example map renderings utilizing a compositeindexable linear data structure in accordance with an embodiment of thepresent invention. In FIG. 5, the building footprints 304 in the maprendering 500 have been set to a more distinct color along the linearelement 302. FIG. 6 depicts a map rendering 600 in which buildingfootprints 304 have been rendered in a distinct color, along a segmentof the linear element 302, in real time based on location data 602, e.g.current location of the user and/or UE 102. FIG. 7 depicts a threedimensional map rendering 700, similar to FIG. 6, in which the buildingfootprints 304 are depicted as three dimensional building meshes. FIG. 8depicts a three dimensional map rendering 800, in which the buildingfootprints/meshes 304 for the elements associated with the compositeindexable linear data structure are set to a distinct color and thecolor for all building footprints not associated with the compositeindexable linear data structure have been removed, e.g. set to no coloror turned off. In other example embodiments, the map elementsassociation with the composite indexable linear data structure may behave other demarcation, such as other color, cross hatching, or thelike.

Example Process for Generating a Composite Indexable Linear DataStructure

Referring now to FIG. 9, the operations performed, such as by theapparatus 200 of FIG. 2, for generating a composite indexable lineardata structure are illustrated. As shown in block 902 of FIG. 9, theapparatus 200 may include means, such as a processor 202, acommunications interface 206, or the like, configured to receive mapdata. The processor 202 may receive the map data from the communicationsinterface 206, which in turn may receive the map data from a memory 204,such as the map database 104. The map data may be received in responseto a request based on a current location, destination location, seriesof locations, or the like. The map data may include the geographicelements, such as lakes, cities, topography, or the like and informationelements such as streets, building foot prints, businesses, transitlines, parks, paths, walkways, trails, labels, building meshes, POIs, orthe like.

Additionally or alternatively, the processor 202 may request and receivemap data based on selecting a linear element, such as by the userentering the linear element information using a user interface 208, asdiscussed at block 904

As shown in block 904 of FIG. 9, the apparatus 200 may include means,such as a processor 202, a memory 204, a communications module 206, orthe like, configured to receive a selected linear element indication.The selected linear element indication may be based on the currentlocation of the user and/or apparatus 200, a series of locations, adestination location or the like.

Additionally or alternatively, the processor 202 may receive theselected linear element indication from the user interface 208, such asin an instance in which the user has selected a street or traced a routeon a map rendering based on map data, as discussed at block 902

As shown at block 906, of FIG. 9, the apparatus 200 may include means,such as a processor 202, a memory 204, or the like, configured toextract map elements from within a boundary box. The processor 202 maygenerate a list of map elements which are within the boundary box. Theprocessor 202 may determine the boundary box automatically based on thelocation data, rate of change of the current location data, or the like.Additionally or alternatively, the processor 202 may receive a boundarybox selection indication from the user interface 208, in an instance inwhich the user selects or alters the focus or zoom level.

The processor 202 may extract, e.g. copy, the map elements data forelements within the boundary box from a memory 204, such as a mapdatabase 104, a spatial data database, a relational database, or thelike.

As shown at block 908 of FIG. 9, the apparatus 200 may include means,such as a processor 202, or the like, configured to index extracted mapelements. The processor 202 may spatially index the extracted mapelement data using a quad-tree, R*Tree, kd-tree, or the like.

As shown at block 910 of FIG. 9, the apparatus 200 may include means,such as a processor 202, or the like, configured to correlate indexedmap elements with a plurality of sub-segments of the linear element. Theprocessor 202 may also sample, e.g. segment, each of the selected linearelements evenly along its entire length. The processor 202 may query thespatial index for each sub-segment endpoint for map elements within apredetermined distance from the sub-segment endpoint coordinates. Thequery may return a list of map elements within range of the respectivesub-segments. The processor 202 may generate one or more indexablelinear data structures by correlating the indexed map elements in to alist associated with the sub-segment, and inserting each into a datastructure, such as a vector, hash table, linked list or the like.

As shown at block 912 of FIG. 9, the apparatus 200 may include means,such as a processor 202, or the like, configured to sort the indexablelinear data structures by distance from the sub-segment of the linearelement.

As shown at block 914 of FIG. 9, the apparatus 200 may include means,such as a processor 202, or the like, configured to generate a compositeindexable linear data structure. The processor 202 may generate acomposite indexable linear data structure by compiling the indexablelinear data structures into a composite indexable linear data structure.

The composite indexable linear data structure may be stored, e.g. cachedin a memory 204, such as a server and transmitted in association orseparately from vector map data tiles with negligible added data space.

In an instance in which a map is rendered using a composite indexablelinear data structure, ambiguity in computing a segment location may beresolved using metadata associated with the map data, such as streetaddress in the case of a POI.

After the composite indexable linear data structure has been generatedit may be incorporated in map rendering applications and/or middleware.The utilization of the composite indexable linear data structures mayenable new rendering features, such as setting style parameters likecolor and transparency in real time such as in FIGS. 4-8. Additionally,the map rendering may be animated. For example, the rendering may beanimated originating from one or more points of the rendering andexpanding along the linear elements, rendering the indexed map elementsas the linear element is rendered expanding form each respective linearelement. The animated rendering may be implemented by selecting a rangeof streets, a sub section of a street, point on the map,longitude/latitude, street index or other index information.

As described above, FIG. 9 illustrates a flowchart of an apparatus 200,method, and computer program product according to example embodiments ofthe invention. It will be understood that each block of the flowchart,and combinations of blocks in the flowchart, may be implemented byvarious means, such as hardware, firmware, processor, circuitry, and/orother communication devices associated with execution of softwareincluding one or more computer program instructions. For example, one ormore of the procedures described above may be embodied by computerprogram instructions. In this regard, the computer program instructionswhich embody the procedures described above may be stored by a memorydevice 204 of an apparatus employing an embodiment of the presentinvention and executed by a processor 202 of the apparatus. As will beappreciated, any such computer program instructions may be loaded onto acomputer or other programmable apparatus (for example, hardware) toproduce a machine, such that the resulting computer or otherprogrammable apparatus implements the functions specified in theflowchart blocks. These computer program instructions may also be storedin a computer-readable memory that may direct a computer or otherprogrammable apparatus to function in a particular manner, such that theinstructions stored in the computer-readable memory produce an articleof manufacture the execution of which implements the function specifiedin the flowchart blocks. The computer program instructions may also beloaded onto a computer or other programmable apparatus to cause a seriesof operations to be performed on the computer or other programmableapparatus to produce a computer-implemented process such that theinstructions which execute on the computer or other programmableapparatus provide operations for implementing the functions specified inthe flowchart blocks.

Accordingly, blocks of the flowchart support combinations of means forperforming the specified functions and combinations of operations forperforming the specified functions for performing the specifiedfunctions. It will also be understood that one or more blocks of theflowchart, and combinations of blocks in the flowchart, can beimplemented by special purpose hardware-based computer systems whichperform the specified functions, or combinations of special purposehardware and computer instructions.

In some embodiments, certain ones of the operations above may bemodified or further amplified. Furthermore, in some embodiments,additional optional operations may be included, such as illustrated bythe dashed outline of block 912 in FIG. 9. Modifications, additions, oramplifications to the operations above may be performed in any order andin any combination.

Many modifications and other embodiments of the inventions set forthherein will come to mind to one skilled in the art to which theseinventions pertain having the benefit of the teachings presented in theforegoing descriptions and the associated drawings. Therefore, it is tobe understood that the inventions are not to be limited to the specificembodiments disclosed and that modifications and other embodiments areintended to be included within the scope of the appended claims.Moreover, although the foregoing descriptions and the associateddrawings describe example embodiments in the context of certain examplecombinations of elements and/or functions, it should be appreciated thatdifferent combinations of elements and/or functions may be provided byalternative embodiments without departing from the scope of the appendedclaims. In this regard, for example, different combinations of elementsand/or functions than those explicitly described above are alsocontemplated as may be set forth in some of the appended claims.Although specific terms are employed herein, they are used in a genericand descriptive sense only and not for purposes of limitation.

That which is claimed:
 1. A method comprising: receiving map data andone or more selected linear element indications, wherein the map datacomprises a list of map elements; extracting, by a processor, mapelements within a bounding box; indexing, by the processor, theextracted map elements, wherein the indexing comprises spatial indexing;searching the spatial index for map elements within a predetermineddistance from the one or more selected linear elements; generating acomposite indexable linear data structure based on the correlation ofmap elements with the one or more selected linear elements; and usingthe composite indexable linear data structure, providing forpresentation of a map rendering, wherein the map elements correspondingto the composite indexable linear data structure are visuallydistinguished and enhanced with one or more of building footprint dataor three-dimensional building mesh data.
 2. The method of claim 1,wherein extracting map elements comprises: extracting map elements froma spatial database.
 3. The method of claim 1, wherein the extracted mapelements comprise one or more of relational data, shape data, or keyholemarkup language file data.
 4. The method of claim 1, wherein thecomposite indexable linear data structure comprises a list of indexedmap elements, wherein the list of indexed map elements comprises vector,hash table, or linked list elements.
 5. The method of claim 1, furthercomprising: sorting an indexable linear data structure by distance froma respective one of the one or more linear elements.
 6. The method ofclaim 1, wherein each of the one or more linear elements is a street,path, or trail.
 7. The method of claim 1, further comprising: segmentingthe one or more selected linear elements into a plurality ofsub-segments; searching the spatial index for map elements within apredetermined distance from the sub-segment; and correlating the indexedmap elements with a respective one of the one or more selected linearelements.
 8. An apparatus comprising at least one processor and at leastone memory including computer program code, the at least one memory andcomputer program code configured to, with the processor, cause theapparatus to at least: receive map data and one or more selected linearelement indications, wherein the map data comprises a list of mapelements; extract map elements within a bounding box; index theextracted map elements, wherein the indexing comprises spatial indexing;search the spatial index for map elements within a predetermineddistance from the one or more selected linear elements; generate acomposite indexable linear data structure based on the correlation ofmap elements with the one or more selected linear elements; and use thecomposite indexable linear data structure, providing for presentation ofa map rendering, wherein the map elements corresponding to the compositeindexable linear data structure are visually distinguished and enhancedwith one or more of building footprint data or three-dimensionalbuilding mesh data.
 9. The apparatus of claim 8, wherein causing theapparatus to extract map elements comprises causing the apparatus to:extract map elements from a spatial database.
 10. The apparatus of claim8, wherein the extracted map elements comprise one or more of relationaldata, shape data, or keyhole markup language file data.
 11. Theapparatus of claim 8, wherein the composite indexable linear datastructure comprises a list of indexed map elements, wherein the list ofindexed map elements comprises vector, hash table, or linked listelements.
 12. The apparatus of claim 8, wherein the at least one memoryand the computer program code are further configured to cause theapparatus to: sort an indexable linear data structure by distance from arespective one of the one or more linear elements.
 13. The apparatus ofclaim 8, wherein each of the one or more linear elements is a street,path, or trail.
 14. The apparatus of claim 8, wherein the at least onememory and the computer program code are further configured to cause theapparatus to: segment the one or more selected linear elements into aplurality of sub-segments; search the spatial index for map elementswithin a predetermined distance from the sub-segment; and correlate theindexed map elements with a respective one of the one or more selectedlinear elements.
 15. A computer program product comprising at least onenon-transitory computer-readable storage medium havingcomputer-executable program code portions stored therein, thecomputer-executable program code portions comprising program codeinstructions configured to: receive map data and one or more selectedlinear element indications, wherein the map data comprises a list of mapelements; extract map elements within a bounding box; index theextracted map elements, wherein the indexing comprises spatial indexing;search the spatial index for map elements within a predetermineddistance from the one or more selected linear elements; generate acomposite indexable linear data structure based on the correlation ofmap elements with the one or more selected linear elements; and use thecomposite indexable linear data structure, providing for presentation ofa map rendering, wherein the map elements corresponding to the compositeindexable linear data structure are visually distinguished and enhancedwith one or more of building footprint data or three-dimensionalbuilding mesh data.
 16. The computer program product of claim 15,wherein the program code instructions to extract map elements compriseprogram code instructions to: extract map elements from a spatialdatabase.
 17. The computer program product of claim 15, wherein theextracted map elements comprise one or more of relational data, shapedata, or keyhole markup language file data.
 18. The computer programproduct of claim 15, wherein the composite indexable linear datastructure comprises a list of indexed map elements, wherein the list ofindexed map elements comprises vector, hash table, or linked listelements.
 19. The computer program product of claim 15, wherein thecomputer-executable program code portions further comprise program codeinstructions configured to: sort an indexable linear data structure bydistance from a respective one of the plurality of sub segments of thelinear element.
 20. The computer program product of claim 15, whereinthe computer-executable program code portions further comprise programcode instructions configured to: segment the one or more selected linearelements into a plurality of sub-segments; search the spatial index formap elements within a predetermined distance from the sub-segment; andcorrelate the indexed map elements with a respective one of the one ormore selected linear elements.